import os
from PIL import Image

# 分解gif
def parse_gif(filepath,png_path):
    im=Image.open(filepath)#打开一个序列文件时，PIL库自动加载第一帧
    im.save(os.path.join(png_path,str(im.tell())+'.png')) #保存第一帧到当前目录下
    
    try:
        while(1):
            im.seek(im.tell()+1)#向下一帧移动
            im.save(os.path.join(png_path,str(im.tell())+'.png'))#保存下一帧
    except EOFError:
        print("ok!")
        pass

# 合成gif
def png_to_gif(png_path,gif_name):
    """png合成gif图像"""
    frames = []
    # 返回文件夹内的所有静态图的列表
    png_files = os.listdir(png_path)
    # 打印返回的列表
    print(png_files)
    # 读取文件内的静态图
    for frame_id in range(0,len(png_files)):
        frame = Image.open(os.path.join(png_path,'%d.png'%frame_id))
        frames.append(frame)
    # 以第一张图片作为开始，将后续图片合并成 gif 动态图
    # 参数说明：
    # save_all 保存图像;transparency 设置透明背景色;duration 单位毫秒，动画持续时间， 
    # loop=0 无限循环;disposal=2 恢复原背景颜色。参数详细说明，请参阅官方文档，网址见文章末尾处。
    frames[0].save(gif_name,save_all=True,append_images=frames[1:],transparency=1,duration=2000,loop=0,disposal=2)

def remove_bg(filename): # TODO 用sd的rembg api
    os.system(f'backgroundremover -i "{filename}" -o "{filename}.nobg.png"')


if __name__ == '__main__':
    # filename='mengbi.gif'
    # parse_gif(filename,"tmp/test")
    # png_to_gif("tmp/test",'合成.gif')
    remove_bg('tmp/test/3.png')
    pass
    